# 0、导包
import logging.handlers
import time


# 1、创建【日志器对象】
logger = logging.getLogger()

# 2、设置【日志器对象】的打印级别
logger.setLevel(logging.INFO)
# logging.DEBUG 调试级别
# logging.INFO 信息级别
# logging.WARNNING 警告级别
# logging.ERROR 错误级别
# logging.CRITICAL 严重错误级别

# 3.1、创建 输出到控制台 的对象---【控制台对象】
to_console = logging.StreamHandler()
# 3.2、创建 输出到日志文件 的对象---【日志文件对象】
to_file = logging.handlers.TimedRotatingFileHandler("a.log", when="midnight", interval=1,
                                                    backupCount=3, encoding="utf-8")
# when，字符串，指定日志切分间隔时间的单位，midnight：凌晨12点
# interval，整型，是间隔时间单位的个数，指等待多少个when以后，继续进行日志记录。等于1的时候表示，每个凌晨12点记录一份log文件
# backupCount，是保留文件的个数。如新增文件生成后超过这个数值，会把时间较老的log文件删掉

# 4、创建日志（信息格式）
fmt = "%(asctime)s %(levelname)s [%(filename)s(%(funcName)s:%(lineno)d] - %(message)s"
formatter = logging.Formatter(fmt)

# 4.1、（信息格式） 设置给 【控制台对象】
to_console.setFormatter(formatter)
# 4.2、（信息格式） 设置给 【日志文件对象】
to_file.setFormatter(formatter)

# 5.1、给【日志器对象】 添加 【控制台对象】，这样日志就能在控制台打印出来
logger.addHandler(to_console)
# 5.2、给【日志器对象】 添加 【日志文件对象】，这样日志就能生成日志文件
logger.addHandler(to_file)

# 6、打印日志
while True:
    logging.warning("日志输出示例：这是一个警告级别的日志")
    time.sleep(1)